Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Portable Executable</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Portable_Executable"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Portable_Executable rootpage-Portable_Executable skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Portable Executable</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Portable Executable</b> beschreibt ein Binärformat <a href="Ausf%C3%BChrbares_Programm" class="mw-redirect" title="Ausführbares Programm">ausführbarer Programme</a>, sogenannte <b>PE-Dateien</b>. Es ist das <a href="Dateiformat" title="Dateiformat">Dateiformat</a>, das bei <a href="Win32" class="mw-redirect" title="Win32">Win32</a>- und <a href="Win64" class="mw-redirect" title="Win64">Win64</a>-Systemen für ausführbare Dateien verwendet wird. Außerdem ist es das Format für ausführbare Dateien in <a href="Unified_Extensible_Firmware_Interface" title="Unified Extensible Firmware Interface">EFI</a>-Umgebungen. Es basiert auf dem <a href="Common_Object_File_Format" title="Common Object File Format">COFF</a>-Binärformat.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Mögliche Dateiendungen sind zum Beispiel:
</p>
<ul><li>.exe – <i>executable</i>, ein alleinstehendes <a href="Computerprogramm" title="Computerprogramm">Programm</a> oder das Hauptmodul</li>
<li>.dll – <i><a href="Dynamic_Link_Library" title="Dynamic Link Library">Dynamic Link Library</a></i></li>
<li>.sys – <i>system</i>, grundlegende <a href="Systemsoftware" title="Systemsoftware">Systemsoftware</a> mit besonderer Behandlung durch das Betriebssystem</li>
<li>.drv – <i>driver</i>, ein <a href="Ger%C3%A4tetreiber" title="Gerätetreiber">Treiber</a></li>
<li>.scr – <i>screensaver</i>, ein <a href="Bildschirmschoner" title="Bildschirmschoner">Bildschirmschoner</a></li>
<li>.cpl – <i>control panel applet</i>, ein Plugin der Windows-Systemsteuerung</li>
<li>.ocx – <i>activex control</i>, ein <a href="ActiveX" title="ActiveX">ActiveX</a>-Steuerelement</li>
<li>.ax – ein <a href="DirectShow" class="mw-redirect" title="DirectShow">DirectShow</a>-Filter</li>
<li>.efi – ein <a href="Extensible_Firmware_Interface" class="mw-redirect" title="Extensible Firmware Interface">EFI</a>-Modul</li></ul>
<p>Außer der Erweiterung <a href=".exe" class="mw-redirect" title=".exe">.exe</a>, die eine Datei als eigenständiges Programm identifiziert, ist das PE-Format nicht an eine Erweiterung gebunden.
Programmiertechnisch kann das System dazu gebracht werden, Code in jeder im PE-Format vorliegenden Datei auszuführen.
DLL-Dateien können beispielsweise Funktionen exportieren, die von anderen Programmen aufgerufen werden. Bei DRV- und SYS-Dateien handelt es sich in der Regel um Gerätetreiber, welche von <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a> verwendet werden, um die <a href="Hardware" title="Hardware">Hardware</a> anzusteuern.
</p><p>Neben Windows verwendet auch <a href="ReactOS" title="ReactOS">ReactOS</a> das PE-Dateiformat und ermöglicht so (zurzeit nur sehr beschränkt) die Ausführung von Windows-Programmen. Frühe Versionen von <a href="BeOS" title="BeOS">BeOS</a> sowie <a href="SkyOS" title="SkyOS">SkyOS</a> verwendeten ebenfalls das PE-Dateiformat für ihre ausführbaren Programme. Da sie aber eine andere <a href="Bin%C3%A4rschnittstelle" title="Binärschnittstelle">Binärschnittstelle</a> (ABI) verwendeten, waren sie nicht <a href="Bin%C3%A4rkompatibilit%C3%A4t" class="mw-redirect" title="Binärkompatibilität">binärkompatibel</a> zu Windows und beabsichtigten dies auch gar nicht. SkyOS verwendet inzwischen das verbreitete <a href="Executable_and_Linking_Format" title="Executable and Linking Format">ELF</a>-Format, welches zuvor mit dem Betriebssystem <a href="Linux" title="Linux">Linux</a> populär wurde, da es dort das Standardformat für Binärprogramme ist.
</p><p>Windows-Dateien im PE-Format lassen sich unter Linux mit Hilfe von <a href="WINE" class="mw-redirect" title="WINE">WINE</a> und unter <a href="Disk_Operating_System" title="Disk Operating System">DOS</a> teilweise mit Hilfe des <a href="HX_DOS_Extender" title="HX DOS Extender">HX DOS Extenders</a> ausführen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Aufbau">Aufbau</h2></div>
<p>Jede PE-Datei beginnt mit dem aus DOS-Zeiten bekannten <a href="MZ-Datei" title="MZ-Datei">MZ-Header</a>. Dieser dient hier in erster Linie dazu, ein <a href="EXE" title="EXE">EXE</a>-Programm, das nicht für ein DOS-Betriebssystem bestimmt ist, mit einer Fehlermeldung (z. B. „This program cannot be run in DOS Mode“) zu beenden, falls versucht wird, es doch unter DOS zu starten. Am Anfang einer PE-Datei sind daher, wie bei jeder EXE-Datei von MS-DOS, die zwei Buchstaben „MZ“ zu finden, die Initialen von <a href="Mark_Zbikowski" title="Mark Zbikowski">Mark Zbikowski</a>, dem Entwickler des DOS-Programmformats. Technisch gesehen handelt es sich bei dem Code, der die Fehlermeldung ausgibt, um ein vollständiges DOS-Programm, das entsprechend programmiert unter DOS auch andere Funktionen als eine Fehlermeldung haben kann.
</p><p>Das letzte Feld im DOS-Header verweist auf die Position des PE-Headers, der dann auch mit der ASCII-Kennung „PE“ und zwei Null-Bytes beginnt.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Der eigentliche PE-Header besteht aus zwei Teilen, dem IMAGE_FILE_HEADER, der die Anzahl der Segmente, den erforderlichen CPU-Typ und weitere Flags enthält, sowie dem IMAGE_OPTIONAL_HEADER (der für lauffähige Programmdateien trotz des Namens nicht optional ist). Dieser enthält unter anderem die Größe der einzelnen Code- und Datensegmente in der Datei sowie weitere Angaben über die benötigten Ressourcen (Speicher, Betriebssystemversion).
</p><p>Nachfolgender <a href="Hexdump" class="mw-redirect" title="Hexdump">Hexdump</a> veranschaulicht den Beginn eines EXE-Programms für Windows (32 Bit). Die Leerzeile ist zur Verdeutlichung des Stub-Endes eingefügt. Danach beginnt ab Adresse 00000100h der PE-Header. Die DOS-Fehlermeldung der als Stub eingefügten, nur 256 <a href="Byte" title="Byte">Byte</a> großen MZ-Datei lautet in diesem Fall „This program must be run under Win32“.
</p>
<pre>00000000: <b>4D 5A</b> 50 00 02 00 00 00 04 00 0F 00 FF FF 00 00 <b>MZ</b>P.............
00000010: B8 00 00 00 00 00 00 00 40 00 1A 00 00 00 00 00 ........@.......
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 <b>00 01 00 00</b> ................
00000040: BA 10 00 0E 1F B4 09 CD 21 B8 01 4C CD 21 90 90 ........!..L.!..
00000050: 54 68 69 73 20 70 72 6F 67 72 61 6D 20 6D 75 73 This program mus
00000060: 74 20 62 65 20 72 75 6E 20 75 6E 64 65 72 20 57 t be run under W
00000070: 69 6E 33 32 0D 0A 24 37 00 00 00 00 00 00 00 00 in32..$7........
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00000100: <b>50 45 00 00</b> 4C 01 06 00 19 5E 42 2A 00 00 00 00 <b>PE..</b>L....^B*....
00000110: 00 00 00 00 E0 00 8E 81 0B 01 02 19 00 38 01 00 .............8..
00000120: 00 88 06 00 00 00 00 00 F0 45 01 00 00 10 00 00 .........E......
...
...
</pre>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/121460"><i>Microsoft KB Archive/121460 - BetaArchive Wiki.</i></a><span class="Abrufdatum"> Abgerufen am 11.&nbsp;Dezember 2021</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3APortable+Executable&amp;rft.title=Microsoft+KB+Archive%2F121460+-+BetaArchive+Wiki&amp;rft.description=Microsoft+KB+Archive%2F121460+-+BetaArchive+Wiki&amp;rft.identifier=https%3A%2F%2Fwww.betaarchive.com%2Fwiki%2Findex.php%2FMicrosoft_KB_Archive%2F121460">&nbsp;</span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="cite">Karl-Bridge-Microsoft: <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/windows/win32/debug/pe-format"><i>PE Format - Win32 apps.</i></a><span class="Abrufdatum"> Abgerufen am 11.&nbsp;Dezember 2021</span> (amerikanisches Englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3APortable+Executable&amp;rft.title=PE+Format+-+Win32+apps&amp;rft.description=PE+Format+-+Win32+apps&amp;rft.identifier=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fwindows%2Fwin32%2Fdebug%2Fpe-format&amp;rft.creator=Karl-Bridge-Microsoft&amp;rft.language=en-us">&nbsp;</span></span>
</li>
</ol>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx">Microsoft Portable Executable and Common Object File Format Specification</a> (englisch)</li>
<li>Matt Pietrek: <a rel="nofollow" class="external text" href="https://msdn.microsoft.com/en-us/library/ms809762.aspx">Peering Inside the PE: A Tour of the Win32 Portable Executable File Format</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://www.iana.org/assignments/media-types/application/vnd.microsoft.portable-executable">MIME Typ-Registrierung</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://www.deinmeister.de/w32asm5.htm">Win32 Assembler Tutorial</a></li>
<li><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/windows/win32/debug/pe-format">Microsoft Docs PE Format Specification</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="https://devblogs.microsoft.com/oldnewthing/20141003-00/?p=43923">Why is 0x00400000 the default base address for an executable? by Raymond Chen</a> (englisch)</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-03-27" href="https://de.wikipedia.org/wiki/?title=Portable_Executable&amp;oldid=243496357">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>